<?php
/**
 *
 */
class Zend_Sql_Dialect
{
	protected $key_types;
	protected $key_functions;
	protected $key_operators;
	protected $key_commands;
	protected $key_reserved;
	protected $key_conjunctions;
	protected $key_symbols;

	public $types        = array();
	public $functions    = array();
	public $operators    = array();
	public $commands     = array();
	public $reserved     = array();
	public $conjunctions = array();

	public $synonyms = array();
	public $lexeropts  = array();// ???
	public $parseropts = array();// ???

	public $comments = array();// !?
	public $quotes   = array();// !?

	/**
	 * @return Array
	 */
	public function getSymbols() {
		if (is_null($this->key_symbols)) {
			$this->key_symbols = array_merge(
				$this->getTypes(),
				$this->getFunctions(),
				$this->getOperators(),
				$this->getCommands(),
				$this->getReserved(),
				$this->getConjunctions()
			);
		}
		return $this->key_symbols;
	}
	public function getTypes() {
		if (is_null($this->key_types)) {
			$this->key_types = array_flip($this->types);
		}
		return $this->key_types;
	}
	public function getFunctions() {
		if (is_null($this->key_functions)) {
			$this->key_functions = array_flip($this->functions);
		}
		return $this->key_functions;
	}
	public function getOperators() {
		if (is_null($this->key_operators)) {
			$this->key_operators = array_flip($this->operators);
		}
		return $this->key_operators;
	}
	public function getCommands() {
		if (is_null($this->key_commands)) {
			$this->key_commands = array_flip($this->commands);
		}
		return $this->key_commands;
	}
	public function getReserved() {
		if (is_null($this->key_reserved)) {
			$this->key_reserved = array_flip($this->reserved);
		}
		return $this->key_reserved;
	}
	public function getConjunctions() {
		if (is_null($this->key_conjunctions)) {
			$this->key_conjunctions = array_flip($this->conjunctions);
		}
		return $this->key_conjunctions;
	}
}
